const fs = require('fs');
const path = require('path');

// 图片资源检查配置
const ASSET_CONFIG = {
  maxSize: 100 * 1024, // 100KB
  allowedTypes: ['.png', '.jpg', '.jpeg'],
  requiredDirs: [
    'static/tabs',
    'static/banner',
    'static/goods'
  ]
};

function checkAssets() {
  let hasError = false;
  
  // 检查必需目录
  ASSET_CONFIG.requiredDirs.forEach(dir => {
    const fullPath = path.join(__dirname, '../', dir);
    if (!fs.existsSync(fullPath)) {
      console.error(`❌ 缺失必需目录: ${dir}`);
      hasError = true;
    }
  });

  // 检查图片大小和类型
  function checkDir(dir) {
    const files = fs.readdirSync(dir);
    files.forEach(file => {
      const filePath = path.join(dir, file);
      const stat = fs.statSync(filePath);
      
      if (stat.isFile()) {
        const ext = path.extname(file).toLowerCase();
        
        // 检查文件类型
        if (!ASSET_CONFIG.allowedTypes.includes(ext)) {
          console.error(`❌ 不支持的图片格式: ${filePath}`);
          hasError = true;
        }
        
        // 检查文件大小
        if (stat.size > ASSET_CONFIG.maxSize) {
          console.error(`❌ 图片过大(${(stat.size/1024).toFixed(1)}KB): ${filePath} (最大允许${ASSET_CONFIG.maxSize/1024}KB)`);
          hasError = true;
        }
        
        // 检查0字节文件
        if (stat.size === 0) {
          console.error(`❌ 空文件: ${filePath}`);
          hasError = true;
        }
      }
    });
  }

  // 检查所有static子目录
  ASSET_CONFIG.requiredDirs.forEach(dir => {
    const fullPath = path.join(__dirname, '../', dir);
    if (fs.existsSync(fullPath)) {
      checkDir(fullPath);
    }
  });

  if (hasError) {
    console.log('\n请按照以下规范修正图片资源:');
    console.log(`- 文件类型: ${ASSET_CONFIG.allowedTypes.join(', ')}`);
    console.log(`- 最大尺寸: ${ASSET_CONFIG.maxSize/1024}KB`);
    console.log('- 必需目录: static/{tabs,banner,goods}');
    process.exit(1);
  } else {
    console.log('✅ 所有图片资源符合规范');
  }
}

checkAssets();